import router from '@/router'
import store from './store'

router.beforeEach(async(to, from, next) => {
  const token = store.getters.token
  const url = to.path
  const list = ['/login', '/404']
  // 1 .有token去登录页 =》 调到登录页
  if (token && url === '/login') {
    next('/')
  }

  // 2 .有 token 不是去登录页 =》 放行
  if (token && url !== '/login') {
    // 确保有token的页面杜能获取到数据，并优化
    if (!store.state.user.userInfo.userId) {
      await store.dispatch('user/getUserInfo')
      // console.log(store.state.user.userInfo)
      const { roles } = store.state.user.userInfo
      // 获取用户数据之后, 跳转页面之前
      const routes = await store.dispatch('permission/filterRoutes', roles.menus)
      // 接收到筛选出来的有权限动态路由, 通过 addRoutes 添加即可
      router.addRoutes([
        ...routes,
        { path: '*', redirect: '/404', hidden: true }
      ])
      next(to.path)
    } else {
      next()
    }
  }

  // 3 . 没有token 在白名单 放行
  if (!token && list.includes(url)) {
    next()
  }

  //  4 . 没有 token 不在白名单 ，=》 跳回登录页
  if (!token && !list.includes(url)) {
    next('/login')
  }
  // // 设置白名单
  // const list = ['/login', '/404']
  // if (store.getters.token) {
  //   // 是否去登录页
  //   if (to.path === '/login') {
  //   // 跳回主页
  //     next()
  //   } else {
  //   //  放行
  //     next()
  //   }
  // } else {
  //   // 是否在白名单
  //   if (list.indexOf(to.path) >= 0) {
  //     // 放行
  //     next()
  //   } else {
  //     next('/login')
  //   }
  // }
})
